<?php

/**
 * Permite hacer operaciones con la tabla espacioreservado de la base de datos
 * @package simertweb 
 * @subpackage models 
 * @category Administración, Recaudación
 * @author Grecia Espinoza <mrcl2587@gmail.com>
 * @author Juan Maldonado  <jgmaldonadoj@gmail.com>
 * @version 1.0  
 */
class Mespacios_reservados extends CI_Model {

    public function __construct() {
        $this->load->model('mzona');
        $this->load->model('mcalles');
        $this->load->model('msubcalles');
        $this->load->model('mconfiguracion_tarifas');
        $this->load->model('mhistorico');
        $this->load->database();
    }

    /**
     * Guarda un nuevo espacio reservado
     */
    function guardar_reservado() {
        $data = array(
            'numEspacios' => $_POST['numespacios'],
            'precio' => intval($_POST['numespacios']) * floatval($this->mconfiguracion_tarifas->consultar_costo($_POST['razonpago'])),
            'propietario' => strtoupper($_POST['propietario']),
            'razonSocial' => strtoupper($_POST['razonsocial']),
            'razonPago' => strtoupper($_POST['razonpago']),
            'Subcalle_idSubcalle' => $_POST['principal'],
            'Subcalle_idZona' => $this->msubcalles->obtenerSubcalle_idZona($_POST['principal']),
        );
        $this->db->insert('espacioreservado', $data); //guarda los datos en la bd
        $this->db->where('numEspacios', $_POST['numespacios']);
        $this->db->where('propietario', $_POST['propietario']);
        $this->db->where('razonSocial', $_POST['razonsocial']);
        $this->db->where('Subcalle_idSubcalle', $_POST['principal']);
        $idReservado = $this->db->get('espacioreservado')->row()->idReservado;
        $pago = array('anno' => date('Y'), 'idReservado' => $idReservado);
        $this->db->insert('pagos', $pago);
        $id = mysql_insert_id();
        $this->msubcalles->disminuir_azules($_POST['principal'], $_POST['numespacios']);
        $this->mhistorico->guardar_acceso($id, "Creación de un espacio reservado");
    }

    /**
     * Obtiene los espacios resevados, la zona y la subcallle a la que corresponden
     * @return array
     */
    function listar_reservados() {
        $reservados = array();
        $this->db->where('habilitado', 1);
        $query = $this->db->get('espacioreservado')->result();
        foreach ($query as $value) {
            $data = array(
                'zona' => $this->mzona->zona($value->Subcalle_idZona),
                'subcalle' => $this->mcalles->calle($this->msubcalles->idprincipal($value->Subcalle_idSubcalle)) .
                " ENTRE " . $this->mcalles->calle($this->msubcalles->idsecundaria1($value->Subcalle_idSubcalle)) .
                " Y " . $this->mcalles->calle($this->msubcalles->idsecundaria2($value->Subcalle_idSubcalle)) .
                " (" . $this->msubcalles->obtener_orientacion($value->Subcalle_idSubcalle) . ")",
                'propietario' => $value->propietario,
                'razonPago' => $value->razonPago,
                'total' => $value->precio,
                'numespacios' => $value->numEspacios,
                'id' => $value->idReservado
            );
            array_push($reservados, $data);
        }
        return $reservados;
    }

    /**
     * Obtiene un espacio reservado
     * @return type array
     */
    function obtener_reservado() {
        $calles = array();
        $this->db->where('idReservado', $_POST['modificar']);
        $query = $this->db->get('espacioreservado')->result();

        foreach ($query as $value) {
            $data = array(
                'idsubcalle' => $value->Subcalle_idSubcalle,
                'subcalle' => $this->mcalles->calle($this->msubcalles->idprincipal($value->Subcalle_idSubcalle)) . " entre " . $this->mcalles->calle($this->msubcalles->idsecundaria1($value->Subcalle_idSubcalle)) . " y " . $this->mcalles->calle($this->msubcalles->idsecundaria2($value->Subcalle_idSubcalle)) . " (" . $this->msubcalles->obtener_orientacion($value->Subcalle_idSubcalle) . ")",
            );
            array_push($calles, $data);
        }

        return array_merge($query, $calles);
    }

    /**
     * Obtiene el id de una subcalle
     * @param type $idReservado es el id del espacio reservado
     * @return type int
     */
    function obtener_Subcalle_idSubcalle($idReservado) {
        $this->db->where('idReservado', $idReservado);
        $query = $this->db->get('espacioreservado')->row();
        return $query->Subcalle_idSubcalle;
    }

    /**
     * Actualiza la información de un espacio reservado
     */
    function actualizar_reservado() {

        $espAmarillos = $this->msubcalles->obtener_amarillos($_POST['principal']);
        $data = array(
            'numEspacios' => $_POST['numespacios'],
            'precio' => intval($_POST['numespacios']) * floatval($this->mconfiguracion_tarifas->consultar_costo($_POST['razonpago'])),
            'propietario' => strtoupper($_POST['propietario']),
            'razonSocial' => strtoupper($_POST['razonsocial']),
            'razonPago' => strtoupper($_POST['razonpago']),
            'Subcalle_idSubcalle' => $_POST['principal'],
            'Subcalle_idZona' => $this->msubcalles->obtenerSubcalle_idZona($_POST['principal']),
        );
        $this->db->where('idReservado', $_POST['codigo']);
        $this->db->update('espacioreservado', $data);

        if ($espAmarillos > $_POST['numespacios']) {
            $this->msubcalles->aumentar_azules($_POST['principal'], $espAmarillos - $_POST['numespacios']);
        } else {
            if ($espAmarillos < $_POST['numespacios']) {
                $this->msubcalles->disminuir_azules($_POST['principal'], $_POST['numespacios'] - $espAmarillos);
            } else {
                $this->msubcalles->disminuir_azules($_POST['principal'], 0);
            }
        }
        $this->mhistorico->guardar_acceso($_POST['codigo'], "Modificación de un espacio reservado");
    }

    /**
     * Inhabilita un espacio reservado
     */
    function eliminar_reservado() {
        $idSubcalle = $this->obtener_Subcalle_idSubcalle($_POST['eliminar']);
        $espAmarillos = $this->msubcalles->obtener_amarillos($idSubcalle);
        $this->msubcalles->aumentar_azules($idSubcalle, $espAmarillos);
        $data = array('habilitado' => 0);
        $this->db->where('idReservado', $_POST['eliminar']);
        $this->db->update('espacioreservado', $data);
        $this->mhistorico->guardar_acceso($_POST['eliminar'], "Eliminación de un espacio reservado");
    }

    /**
     * Busca un espacio reservado
     * @param type $codigo es el id de un espacio reservado
     * @return type array
     */
    function buscarReservado($codigo) {
        $this->db->where('idReservado', $codigo);
        $this->db->where('habilitado', 1);
        $reservado = $this->db->get('espacioreservado')->row();
        return $reservado;
    }

    /**
     * Busca un espacio reservado y muestra los meses que han sido canceladas
     * @param type $codigo es id del espcio reservado
     * @return string
     */
    function buscar($codigo) {
        $reservado = $this->buscarReservado($codigo);
        //busca todas los que tengan id de espacio reservado
        //y no pagado en los meses.
        $anno = date('Y');
        if (!empty($reservado)) {
            if($reservado->precio == 0){
                return '<font color="red">ESPACIO RESERVADO EXENTO DE PAGO</font>';
            }else{
            $this->db->where('idReservado', $reservado->idReservado);
            $this->db->where('anno', $anno - 1);
            $pagos = $this->db->get('pagos')->row();

            $meses = ''; //almacenas los del año anterior
            if (!($pagos == null)) {


                if ($pagos->enero == 0) {
                    $meses = '0,';
                } else {
                    $meses = '1,';
                }
                if ($pagos->febrero == 0) {
                    $meses = $meses . '0,';
                } else {
                    $meses = $meses . '1,';
                }
                if ($pagos->marzo == 0) {
                    $meses = $meses . '0,';
                } else {
                    $meses = $meses . '1,';
                }
                if ($pagos->abril == 0) {
                    $meses = $meses . '0,';
                } else {
                    $meses = $meses . '1,';
                }
                if ($pagos->mayo == 0) {
                    $meses = $meses . '0,';
                } else {
                    $meses = $meses . '1,';
                }
                if ($pagos->junio == 0) {
                    $meses = $meses . '0,';
                } else {
                    $meses = $meses . '1,';
                }
                if ($pagos->julio == 0) {
                    $meses = $meses . '0,';
                } else {
                    $meses = $meses . '1,';
                }
                if ($pagos->agosto == 0) {
                    $meses = $meses . '0,';
                } else {
                    $meses = $meses . '1,';
                }
                if ($pagos->septiembre == 0) {
                    $meses = $meses . '0,';
                } else {
                    $meses = $meses . '1,';
                }
                if ($pagos->octubre == 0) {
                    $meses = $meses . '0,';
                } else {
                    $meses = $meses . '1,';
                }
                if ($pagos->noviembre == 0) {
                    $meses = $meses . '0,';
                } else {
                    $meses = $meses . '1,';
                }
                if ($pagos->diciembre == 0) {
                    $meses = $meses . '0';
                } else {
                    $meses = $meses . '1';
                }
            }
            $this->db->where('idReservado', $reservado->idReservado);
            $this->db->where('anno', $anno);
            $pagos2 = $this->db->get('pagos')->row();

            $meses2 = ''; //almacena los del año actual
            if ($pagos2->enero == '0') {
                $meses2 = '0,';
            } else {
                $meses2 = '1,';
            }
            if ($pagos2->febrero == 0) {
                $meses2 = $meses2 . '0,';
            } else {
                $meses2 = $meses2 . '1,';
            }
            if ($pagos2->marzo == 0) {
                $meses2 = $meses2 . '0,';
            } else {
                $meses2 = $meses2 . '1,';
            }
            if ($pagos2->abril == 0) {
                $meses2 = $meses2 . '0,';
            } else {
                $meses2 = $meses2 . '1,';
            }
            if ($pagos2->mayo == 0) {
                $meses2 = $meses2 . '0,';
            } else {
                $meses2 = $meses2 . '1,';
            }
            if ($pagos2->junio == 0) {
                $meses2 = $meses2 . '0,';
            } else {
                $meses2 = $meses2 . '1,';
            }
            if ($pagos2->julio == 0) {
                $meses2 = $meses2 . '0,';
            } else {
                $meses2 = $meses2 . '1,';
            }
            if ($pagos2->agosto == 0) {
                $meses2 = $meses2 . '0,';
            } else {
                $meses2 = $meses2 . '1,';
            }
            if ($pagos2->septiembre == 0) {
                $meses2 = $meses2 . '0,';
            } else {
                $meses2 = $meses2 . '1,';
            }
            if ($pagos2->octubre == 0) {
                $meses2 = $meses2 . '0,';
            } else {
                $meses2 = $meses2 . '1,';
            }
            if ($pagos2->noviembre == 0) {
                $meses2 = $meses2 . '0,';
            } else {
                $meses2 = $meses2 . '1,';
            }
            if ($pagos2->diciembre == 0) {
                $meses2 = $meses2 . '0';
            } else {
                $meses2 = $meses2 . '1';
            }

//            if ($reservado->pagado == 1) {
//                return '<font color="red">AVISO: ESPACIO CANCELADO</font>';
//            } else {
            $idSubcalle = $reservado->Subcalle_idSubcalle;
            $idPrincipal = $this->msubcalles->idprincipal($idSubcalle);
            $idsecundaria1 = $this->msubcalles->idsecundaria1($idSubcalle);
            $idsecundaria2 = $this->msubcalles->idsecundaria2($idSubcalle);
            $subcalle = $this->mcalles->calle($idPrincipal) . ' ENTRE ' . $this->mcalles->calle($idsecundaria1)
                    . ' Y ' . $this->mcalles->calle($idsecundaria2);

            $datos = array(
                'codigo' => $reservado->idReservado,
                'propietario' => $reservado->propietario,
                'espacios' => $reservado->numEspacios,
                'localizacion' => $subcalle,
                'razon' => $reservado->razonPago,
                'precio' => $reservado->precio,
//                    'pagado' => $reservado->pagado,
                'meses1' => $meses,
                'meses2' => $meses2
            );
            return $datos;
            }
        } else {
            return '<font color="red">ESPACIO RESERVADO NO ENCONTRADO</font>';
        }
    }

    /**
     * Obtiene los meses pagados
     * @param type $meses es la abreviatura de los meses
     * @return string
     */
    function devolver_meses($meses) {
        for ($i = 0; $i < strlen($meses); $i++) {
            if ($meses[$i] == 'e') {
                $data ['enero'] = 'Enero - ' . date('Y');
            }
            if ($meses[$i] == 'f') {
                $data ['febrero'] = 'Febrero - ' . date('Y');
            }
            if ($meses[$i] == 'z') {
                $data ['marzo'] = 'Marzo - ' . date('Y');
            }
            if ($meses[$i] == 'a') {
                $data ['abril'] = 'Abril - ' . date('Y');
            }
            if ($meses[$i] == 'y') {
                $data ['mayo'] = 'Mayo - ' . date('Y');
            }
            if ($meses[$i] == 'n') {
                $data ['junio'] = 'Junio - ' . date('Y');
            }
            if ($meses[$i] == 'l') {
                $data ['julio'] = 'Julio - ' . date('Y');
            }
            if ($meses[$i] == 'g') {
                $data ['agosto'] = 'Agosto - ' . date('Y');
            }
            if ($meses[$i] == 's') {
                $data ['septiembre'] = 'Septiembre - ' . date('Y');
            }
            if ($meses[$i] == 'o') {
                $data ['octubre'] = 'Octubre - ' . date('Y');
            }
            if ($meses[$i] == 'v') {
                $data ['noviembre'] = 'Noviembre - ' . date('Y');
            }
            if ($meses[$i] == 'd') {
                $data ['diciembre'] = 'Diciembre - ' . date('Y');
            }

            if ($meses[$i] == 'r') {
                $data2 ['enero'] = 'Enero - ' . date('Y') - 1;
            }
            if ($meses[$i] == 'b') {
                $data2 ['febrero'] = 'Febrero - ' . date('Y') - 1;
            }
            if ($meses[$i] == 'm') {
                $data2 ['marzo'] = 'Marzo - ' . date('Y') - 1;
            }
            if ($meses[$i] == 'c') {
                $data2 ['abril'] = 'Abril - ' . date('Y') - 1;
            }
            if ($meses[$i] == 'h') {
                $data2 ['mayo'] = 'Mayo - ' . date('Y') - 1;
            }
            if ($meses[$i] == 'i') {
                $data2 ['junio'] = 'Junio - ' . date('Y') - 1;
            }
            if ($meses[$i] == 'j') {
                $data2 ['julio'] = 'Julio - ' . date('Y') - 1;
            }
            if ($meses[$i] == 'x') {
                $data2 ['agosto'] = 'Agosto - ' . date('Y') - 1;
            }
            if ($meses[$i] == 'k') {
                $data2 ['septiembre'] = 'Septiembre - ' . date('Y') - 1;
            }
            if ($meses[$i] == 'u') {
                $data2 ['octubre'] = 'Octubre - ' . date('Y') - 1;
            }
            if ($meses[$i] == 'q') {
                $data2 ['noviembre'] = 'Noviembre - ' . date('Y') - 1;
            }
            if ($meses[$i] == 't') {
                $data2 ['diciembre'] = 'Diciembre - ' . date('Y') - 1;
            }
        }
        if (!isset($data2)) {
            if (isset($data)) {
                return $data;
            }
        } else {
            return $data2;
        }
    }

    /**
     * Guarda el pago de un espacio reservado
     * @param type $meses son los meses que se van a pagar
     * @param type $reservado es el id del espacio reservado
     * @return string
     */
    function guardarPago($meses, $reservado) {
        //e f z a y n l g s o v d, r b m c h i j x k u q t
//        $idRes = $this->buscarReservado($reservado);
        $data = array(); //almacena los meses del año actual
        $data2 = array(); //almacena los meses del año anterior
        date_default_timezone_set('America/Guayaquil');
        for ($i = 0; $i < strlen($meses); $i++) {
            if ($meses[$i] == 'e') {
                $data ['enero'] = date('Y-m-d');
            }
            if ($meses[$i] == 'f') {
                $data ['febrero'] = date('Y-m-d');
            }
            if ($meses[$i] == 'z') {
                $data ['marzo'] = date('Y-m-d');
            }
            if ($meses[$i] == 'a') {
                $data ['abril'] = date('Y-m-d');
            }
            if ($meses[$i] == 'y') {
                $data ['mayo'] = date('Y-m-d');
            }
            if ($meses[$i] == 'n') {
                $data ['junio'] = date('Y-m-d');
            }
            if ($meses[$i] == 'l') {
                $data ['julio'] = date('Y-m-d');
            }
            if ($meses[$i] == 'g') {
                $data ['agosto'] = date('Y-m-d');
            }
            if ($meses[$i] == 's') {
                $data ['septiembre'] = date('Y-m-d');
            }
            if ($meses[$i] == 'o') {
                $data ['octubre'] = date('Y-m-d');
            }
            if ($meses[$i] == 'v') {
                $data ['noviembre'] = date('Y-m-d');
            }
            if ($meses[$i] == 'd') {
                $data ['diciembre'] = date('Y-m-d');
            }

            if ($meses[$i] == 'r') {
                $data2 ['enero'] = date('Y-m-d');
            }
            if ($meses[$i] == 'b') {
                $data2 ['febrero'] = date('Y-m-d');
            }
            if ($meses[$i] == 'm') {
                $data2 ['marzo'] = date('Y-m-d');
            }
            if ($meses[$i] == 'c') {
                $data2 ['abril'] = date('Y-m-d');
            }
            if ($meses[$i] == 'h') {
                $data2 ['mayo'] = date('Y-m-d');
            }
            if ($meses[$i] == 'i') {
                $data2 ['junio'] = date('Y-m-d');
            }
            if ($meses[$i] == 'j') {
                $data2 ['julio'] = date('Y-m-d');
            }
            if ($meses[$i] == 'x') {
                $data2 ['agosto'] = date('Y-m-d');
            }
            if ($meses[$i] == 'k') {
                $data2 ['septiembre'] = date('Y-m-d');
            }
            if ($meses[$i] == 'u') {
                $data2 ['octubre'] = date('Y-m-d');
            }
            if ($meses[$i] == 'q') {
                $data2 ['noviembre'] = date('Y-m-d');
            }
            if ($meses[$i] == 't') {
                $data2 ['diciembre'] = date('Y-m-d');
            }
        }

        //alamcena una bandera para saber si los arreglos estan vacios
        //almacena 1 si estan vacios
        $b1 = 0;
        $b2 = 0;

        if (!empty($data)) {
            $this->db->where('idReservado', $reservado);
            $this->db->where('anno', date('Y'));
            $this->db->update('pagos', $data);
        } else {
            $b1 = 1;
        }

        if (!empty($data2)) {
            $this->db->where('idReservado', $reservado);
            $this->db->where('anno', date('Y') - 1);
            $this->db->update('pagos', $data2);
        } else {
            $b2 = 1;
        }

        if ($b1 == 0 || $b2 == 0) {
            $this->mhistorico->guardar_acceso($reservado, "Pago de un espacio reservado");
            return "Pago realizado exitosamente";
        } else {
            return "Debe elegir al menos un mes";
        }
    }

}

?>
